package connection;

import java.io.IOException;
import java.net.Socket;
import java.util.ArrayList;

import android.util.Log;
import data.Lista;
import data.Produto;
import data.Utilizador;

public class ConnectionManager {
	// Escolha de um porto entre 1024-65535:
		private static final int PORTO = 62052;
//		public static final String SERVERIP = "54.216.75.26";
		public static final String SERVERIP = "10.0.2.2";
		
		private ServerConnection serverConnection;

		public ConnectionManager() { 
			
			System.out.println("Connection Manager Iniciado...");
			
			try {   
				System.out.println("Buscando Endereço...");
//				InetAddress endereco = InetAddress.getByName("ec2-54-216-75-26.eu-west-1.compute.amazonaws.com");
				
//				InetAddress endereco = InetAddress.getByName(SERVERIP);
				Log.e("TCP Client", "C: Connecting...");
//				System.out.println("Endereço = " + endereco); 
				
				Socket socket = new Socket(SERVERIP, PORTO);
				System.out.println("Socket = " + socket);
				serverConnection = new ServerConnection(socket);

			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}   
		
		public void closeConnection(){
			serverConnection.closeSocket();
		}
		
		public Utilizador autenticacao(String email, String pass){
			return serverConnection.autenticacao(email, pass);
		} 
		
		public ArrayList<Lista> getListas(Utilizador utilizador){
			return serverConnection.getListas(utilizador);
		}
		
		public int updateListas(ArrayList<Lista> listas){
			return serverConnection.updateListas(listas);
		}
		
		public int insereNovaLista(Lista novaLista){
			return serverConnection.insereNovaLista(novaLista);
		}
		
		public String registaUtilizador(Utilizador utilizador) {
			return serverConnection.registaUtilizador(utilizador);
			
		}
		
		public int adicionaProduto(Produto produto, Lista lista, Utilizador utilizador){
			return serverConnection.adicionaProduto(produto, lista, utilizador);
		}
		
		public int removeProduto(Produto produto){
			return serverConnection.removeProduto(produto);
		}
		
		public int removeLista(Lista lista){
			return serverConnection.removeLista(lista);
		}
		
		public int partilhaLista(String email, Lista lista, Utilizador utilizador){
			return serverConnection.partilhaLista(email, lista, utilizador);
		}
		
		public ArrayList<String> actualizaListaNotificacoes(Utilizador utilizador){
			return serverConnection.actualizarListaNotificacoes(utilizador);
		}
		
		public int updateUtilizador(Utilizador utilizador){
			return serverConnection.updateUtilizador(utilizador);
		}
}